// 定义一个Car类，包含车牌号、品牌、颜色、价格等属性和驾驶、停车、加油等方法
class Car(val license: String, val brand: String, var color: String, var price: Double) {
  // 定义一个驾驶方法，打印出车牌号和品牌
  def drive(): Unit = {
    println(s"Driving $license $brand car.")
  }
  // 定义一个停车方法，打印出车牌号和品牌
  def park(): Unit = {
    println(s"Parking $license $brand car.")
  }
  // 定义一个加油方法，打印出车牌号和品牌
  def refuel(): Unit = {
    println(s"Refueling $license $brand car.")
  }
}

// 定义一个ElectricCar子类，继承了Car类的属性和方法，并且添加了电池容量和续航里程属性以及充电方法
class ElectricCar(license: String, brand: String, color: String, price: Double,
                  val batteryCapacity: Double, var range: Double) extends Car(license, brand, color, price) {
  // 定义一个充电方法，打印出车牌号和品牌，并更新续航里程
  def charge(): Unit = {
    println(s"Charging $license $brand electric car.")
    range = batteryCapacity * 100 // 假设每单位电池容量可以行驶100公里
  }
  
  // 重写父类的驾驶方法，在驾驶前检查续航里程是否足够，如果不够就无法驾驶，并打印出相应的信息
  override def drive(): Unit = {
    if (range > 0) { // 如果续航里程大于0，则可以正常驾驶，并减少相应的续航里程
      super.drive() // 调用父类的drive方法
      range -= 10 // 假设每次驾驶消耗10公里的续航里程
    } else { // 如果续航里程小于等于0，则无法正常驾驶，并提示需要充电
      println(s"Cannot drive $license $brand electric car. Please charge it first.")
    }
    
  }
}